package br.com.caelum.fj26;

import java.util.ArrayList;
import java.util.List;

import javax.el.ELContext;
import javax.el.ELResolver;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import br.com.caelum.fj26.modelo.ContaPagar;
import br.com.caelum.fj26.modelo.Fornecedor;

public class ContaPagarHandler {

	private ContaPagar contaPagar = new ContaPagar();

	private List<ContaPagar> contas = new ArrayList<ContaPagar>();

	private HtmlSelectOneMenu fornecedorSelecionado;

	private FornecedorHandler fornecedorHandler;

	public ContaPagarHandler() {
		super();
	}

	public FornecedorHandler getFornecedorHandler() {
		return fornecedorHandler;
	}

	public void setFornecedorHandler(FornecedorHandler fornecedorHandler) {
		this.fornecedorHandler = fornecedorHandler;
	}

	public ContaPagar getContaPagar() {
		return contaPagar;
	}

	public List<ContaPagar> getContas() {
		return contas;
	}

	public HtmlSelectOneMenu getFornecedorSelecionado() {
		return fornecedorSelecionado;
	}

	public void setFornecedorSelecionado(HtmlSelectOneMenu fornecedorSelecionado) {
		this.fornecedorSelecionado = fornecedorSelecionado;
	}

	private FornecedorHandler pegaFornecedorHandler() {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		ELContext elContext = facesContext.getELContext();
		ELResolver resolver = facesContext.getApplication().getELResolver();
		Object fh = resolver.getValue(elContext, null, "fornecedorHandler");
		return (FornecedorHandler) fh;
	}

	public List<SelectItem> getFornecedoresParaComboBox() {
		List<SelectItem> lista = new ArrayList<SelectItem>();
		FornecedorHandler handler = pegaFornecedorHandler();
		for (Fornecedor f : handler.getFornecedores()) {
			lista.add(new SelectItem(f.getId(), f.getNome()));
		}
		return lista;
	}

	public void salva(ActionEvent event) {
		System.out.println("gravando conta: " + contaPagar.getDescricao());
		System.out.println("pago: " + contaPagar.getPago());

		int id = Integer.parseInt(fornecedorSelecionado.getValue().toString());
		Fornecedor f = pegaFornecedorHandler().getFornecedores().get(id - 1);
		contaPagar.setFornecedor(f);

		System.out.println("fornecedor: "
				+ contaPagar.getFornecedor().getNome());
		this.contas.add(contaPagar);
		contaPagar = new ContaPagar();

	}
}
